home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / trucos / clipper / clipper.wri < prev    next >
Encoding:
Text File  |  1995-02-10  |  4.7 KB  |  227 lines

  1.  
  2.  
  3. CLIPPER
  4.  
  5. CALENDARIOS
  6.  
  7. La siguiente funci≤n muestra en pantalla el calendario del mes actual.
  8. Si pulsamos las teclas ½flecha arriba╗ y ½flecha abajo╗, retrocedemos
  9. o avanzamos un mes. Si pulsamos las teclas ½pag_up╗ y ½pag_down╗
  10. retrocedemos o avanzamos un a±o respectivamente. Para salir del
  11. calendario, hay que pulsar la tecla ½escape╗.
  12.  
  13. Su funcionamiento es muy sencillo: basta con llamarlo desde nuestro
  14. programa mediante ½calendar()╗. Ademßs, permite que se le pasen
  15. cuatro parßmetros, tal y como se describen en el listado de la
  16. funci≤n. Estos son las coordenadas de la esquina superior de la caja
  17. (fila y columna), el color del tφtulo (cColorDia) y el color de los
  18. n·meros (cColorFecha). Si se llama a la funci≤n sin parßmetros, se
  19. cogen los asignados por defecto.
  20.  
  21. Para que la rutina funcione correctamente el formato de fecha debe ser
  22. del tipo dd/mm/aa. En este caso se ha elegido lo que se conoce como
  23. formato italiano.
  24.  
  25. function calendar(fila,columna,cColorDia,cColorFecha)
  26.  
  27. set date italian
  28.  
  29. if fila==NIL
  30.  
  31.  fila:=5
  32.  
  33. endif
  34.  
  35. if columna==NIL
  36.  
  37.  columna:=10
  38.  
  39. endif
  40.  
  41. if cColorDia==NIL
  42.  
  43.  cColorDia:="w+/b"
  44.  
  45. endif
  46.  
  47. if cColorFecha==NIL
  48.  
  49.  cColorFecha:="gr+/b"
  50.  
  51. endif
  52.  
  53.  
  54. dFecha1=date()
  55.  
  56. do while lastkey()!=27
  57.  
  58. nFila:=fila
  59.  
  60. nCol:=columna
  61.  
  62.  setcolor(cColorFecha)
  63.  
  64.  @nFila-4,nCol,nFila+6,nCol+25 BOX "+-+ª+-+ª "
  65.  
  66.  cTitulo := cMonth(dFecha1)+str(year(dFecha1))
  67.  
  68.  nLongitud := int(len(cTitulo)/2)
  69.  
  70.  @nFila-3,nCol+13-nLongitud say cTitulo
  71.  
  72.  @nFila-2,nCol+1 to nFila-2,nCol+24
  73.  
  74.  setcolor(cColorDia)
  75.  
  76.  @nFila-1,nCol+3 say " D L M X J V S"
  77.  
  78.  setcolor(cColorFecha)
  79.  
  80.  for t=1 to 31
  81.  
  82.  fecha=str(t)+"/"+str(month(dFecha1))+"/"+str(year(dFecha1))
  83.  
  84.  fecha=ctod(fecha)
  85.  
  86.  if dow(fecha)!=0
  87.  
  88.  @nFila,nCol+((dow(fecha))*3) say t picture "99"
  89.  
  90.  endif
  91.  
  92.  if dow(fecha)=7
  93.  
  94.  nFila++
  95.  
  96.  endif
  97.  
  98.  next
  99.  
  100.  inkey(0)
  101.  
  102.  if lastkey()=5 .and. month(dFecha1)>1
  103.  
  104.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1)-1)+"/"+str(year
  105.  (dFecha1)))
  106.  
  107.  elseif lastkey()=24 .and. month(dFecha1)<12
  108.  
  109.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1)+1)+"/"+str(year
  110.  (dFecha1)))
  111.  
  112.  elseif lastkey()=18
  113.  
  114.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1))+"/"+str(year
  115.  (dFecha1)-1))
  116.  
  117.  elseif lastkey()=3
  118.  
  119.  dFecha1=ctod(str(day(dFecha1))+"/"+str(month(dFecha1))+"/"+str(year
  120.  (dFecha1)+1))
  121.  
  122.  endif
  123.  
  124. enddo
  125.  
  126. Fernando A. Casa Vßzquez
  127.  
  128. Fuenlabrada (Madrid)
  129.  
  130.  
  131. TRES FUNCIONES
  132.  
  133. Funci≤n para rellenar una parte de la pantalla de un color
  134.  
  135. Esta simple funci≤n nos permite rellenar una zona de la pantalla de un
  136. color, mediante la introducci≤n de los parßmetros de las coordenadas y
  137. el tipo de color.
  138.  
  139. Esta rutina s≤lo funciona en la versi≤n 5.2 de Clipper, aunque puede
  140. servir en versiones anteriores incluyendo tras la definici≤n de los
  141. parßmetros la orden ½SET COLOR TO /&COLORE╗ y borrando en la lφnea del
  142. REPLICATE el trozo que dice ½COLOR "/"+COLORES╗.
  143.  
  144. PROCEDURE TROZO
  145.  
  146. PARAMETERS F1, C1, F2, C2, COLORES
  147.  
  148. CO2= (C2-C1)+1
  149.  
  150. DO WHILE F1<=F2
  151.  
  152.  @ F1,C1 SAY REPLICATE(" ",CO2) COLOR "/"+COLORES
  153.  
  154.  F1=F1+1
  155.  
  156. ENDDO
  157.  
  158. RETURN
  159.  
  160. Funci≤n para la mezcla de colores de fondo
  161.  
  162. Esta peque±a funci≤n nos permite mezclar los caracteres ASCII 176, 177
  163. y 178 (que son prßcticamente iguales pero se diferencian en el
  164. espesor) con distintos colores y rellenar toda la pantalla. Asφ
  165. podremos conseguir infinidad de colores para el fondo de la pantalla.
  166.  
  167. Los parßmetros que se han de especificar son los caracteres ASCII 176,
  168. 177 y 178, y los colores (NORMAL/FONDO). Esta funci≤n s≤lo funciona
  169. con la versi≤n 5.2 de Clipper; para que podamos usarla con versiones
  170. anteriores se ha de incluir despuΘs de la definici≤n de los parßmetros
  171. la instrucci≤n ½SET COLOR TO &COLORES╗ y se ha de borrar en la lφnea
  172. del REPLICATE el trozo que dice ½COLOR "/"+COLORES╗.
  173.  
  174. PROCEDURE FONDO
  175.  
  176. PARAMETERS CARACTER, COLORES
  177.  
  178. F=0
  179.  
  180. DO WHILE F<=24
  181.  
  182.  @ F,0 SAY REPLICATE (CARACTER,80) COLOR "/"+COLORES
  183.  
  184.  F=F+1
  185.  
  186. ENDDO
  187.  
  188. RETURN
  189.  
  190. Funci≤n para crear la sombra de los recuadros
  191.  
  192. En esta funci≤n basta con introducir como parßmetros las coordenadas
  193. que tiene el recuadro y automßticamente la funci≤n crea la sombra del
  194. mismo.
  195.  
  196. S≤lo sirve para la versi≤n 5.2 de Clipper, pero podemos adaptarla a
  197. versiones anteriores si despuΘs de la definici≤n de los parßmetros
  198. incluimos la instrucci≤n ½SET COLOR TO /N╗ y en la lφnea del REPLICATE
  199. borramos el trozo que dice ½COLOR "/N"╗.
  200.  
  201. PROCEDURE SOMBRA
  202.  
  203. PARAMETERS F1, C1, F2, C2
  204.  
  205. ABAJO=(C2-C1)+1
  206.  
  207. LATERAL=(F2-F1)+1
  208.  
  209. @ F2+1, C1+2 SAY REPLICATE(" ", ABAJO) COLOR "/N"
  210.  
  211. FOR I = 1 TO LATERAL
  212.  
  213.  @ F1+1, C2+1 SAY " " COLOR "/N"
  214.  
  215.  F1=F1+1
  216.  
  217. NEXT
  218.  
  219. RETURN
  220.  
  221. Alberto Ruiz Berm·dez
  222.  
  223. Hospitalet (Barcelona)
  224.  
  225.  
  226.  
  227.